package Day_0208.Redis;

/**
 * @author zxc
 * @date 2023/02/08 23:13
 **/
public class Redis_Transaction {
    public static void main(String[] args) {
        /**
         * 谈一谈对于Redis事务的理解
         * ===》
         * 1.Redis事务功能是通过MULTI、EXEC、DISCARD和WATCH 四个原语实现的;
         * 2.Redis会将一个事务中的所有命令序列化，然后按顺序执行;
         * ===>
         * 总结 ：Redis会将一个Redis事务中所有命令序列化，然后顺序执行;
         *
         * 3.redis 不支持回滚;
         * “Redis 在事务失败时不进行回滚，而是继续执行余下的命令”， 所以 Redis 的内部可以保持简单且快速。
         *
         * 4.如果在一个事务中的命令出现错误，那么所有的命令都不会执行;
         *
         * 5.如果在一个事务中出现运行错误，那么正确的命令会被执行。
         *
         *
         * 6. Redis事务的常用命令：
         * 1）MULTI命令用于开启一个事务，它总是返回OK。
         * MULTI执行之后，客户端可以继续向服务器发送任意多条命令，这些命令不会立即被执行，
         * 而是被放到一个队列中，当EXEC命令被调用时，所有队列中的命令才会被执行。
         *
         * 2）EXEC：
         * 执行所有事务块内的所有Redis命令。
         * 返回事务块内所有命令的返回值，按命令执行的先后顺序排列。
         * 当操作被打断时，返回空值 nil 。
         *
         * 3）DISCARD ：
         * 客户端可以清空事务队列，并放弃执行事务，并且客户端会从事务状态中退出。
         *
         * 4）WATCH ：
         * 可以为 Redis 事务提供 check-and-set （CAS）行为。
         * 可以监控一个或多个键，一旦其中有一个键被修改（或删除），之后的事务就不会执行，监控一直持续到EXEC命令。
         *
         */
    }
}
